1. Field of the Invention
This invention relates to a system for distributing content data over a computer network and a method for arranging nodes for distribution of data over a computer network. The system and method of the present invention are particularly useful for the distribution of streaming video over the Internet.
2. Prior Art
In a computer network such as the Internet, each node in the network has an address. A computer system resident at a particular address may have sufficient bandwidth or capacity to receive data from, and to transmit data to, many other systems at other addresses. An example of such a system is a server, many commercial versions of which can simultaneously exchange data with thousands of other computer systems.
A computer system at another location may have only sufficient bandwidth to effectively exchange data with only one other computer system. An example of such a system is an end user's personal computer connected to the Internet by a very low speed dialup modem. However, even typical personal computers connected to the Internet by higher speed dialup modems have sufficient bandwidth that they may exchange data simultaneously with several other computer systems. An end user's personal computer system may also have even greater bandwidth when connected to the Internet by ISDN lines, DSL lines, cable modems, T1 lines or even higher capacity links. As discussed more fully below, the present invention takes advantage of the availability of such higher capacity end user systems.
In a typical situation, as shown in FIG. 1, a content provider distributes its data by making it available on a server node 8 simultaneously to a plurality of users at user nodes 12. The double-headed arrows show the two-way communication between each end user's system and the server. Essentially the content provider's server transmits a separate stream of signals to each receiver node. To accommodate additional users, the content provider would typically either add equipment to increase capacity or it would engage a mirror site to accomplish the same result as adding equipment. The capacities of the end users is of virtually no consequence in such a system.
Another system for distributing data is exemplified by the Napster™ music file exchange system provided by Napster, Inc. of Redwood City, Calif. Until recently, the Napster™ system, illustrated in FIG. 2, was focused on the distribution between end users of data representing music. Obviously, data representing other information could be distributed by the Napster™ system.
In the Napster™ system a copy of the music data is not kept on the server. The server 9 instead maintains a database of the music files on the computers of users who are logged onto the server. When a first user 12a sees that a desired music file is available from a second logged on user 12b, the first user causes his computer to query the Napster™ server for the second user's node address and a connection is made between the first and second user's computers through which the first user's computer notifies the second user's computer of the desired file and the second user's computer responds by transmitting a copy of the desired music file directly to the first user's computer. In the Napster™ system, users must become “members” and have special purpose software loaded into their computers, so that each user's music files may be catalogued by the Napster™ server. However, a first user attempting to download a particular file from a second user must start completely over again if the second user cancels its transmission or goes off line during the data transfer.
The prior art data distribution arrangements work reasonably well with data representing graphics or text. The data file for a web page is usually sufficiently small that relatively few packets of information need be transmitted from a server to a user node. Browser software on the computer system at a user node takes the information it receives, temporarily stores it in buffer memory defined by the browser software, and assembles the appropriate image on the computer system's monitor (or otherwise stores the information in the computer system's long-term memory). The data transfer transactions are usually short and the file sizes relatively small compared to the memory assets in the typical user's computer system. So, during transactions involving graphics and/or text the bandwidths of most servers are rarely over-taxed and most users are able to make satisfactory connections to servers. Also, the memory assets of the typical computer system at the user node are not significantly impacted.
However, when the data files represent moving images and/or sound, file sizes are much larger. This makes sense of course. A web page depicting solely a graphic of a man standing may require X bytes. A video clip depicting a man walking for 10 seconds would likely take at least 100X bytes (for a very jagged moving image depicted at 10 frames per second). In fact, in order to have clear moving images and sound (i.e., to maintain high resolution), the data files could be enormous.
Various compression/decompression software programs have kept the file sizes manageable, so that downloading of video clips and music files from servers or the exchanging of such data has been somewhat acceptable, as evidenced by the recent popularity of the Napster™ music file exchange. In schemes such as described in this paragraph, the data file representing the moving images and/or audio is completely downloaded by a user's computer system from a server (or from another user's computer system connected to server similar to that used in the Napster™ system) and, after downloading is completed, the user may use an image and/or audio player program (sometimes referred to in the Internet world as a “plugin”) to play the moving images and/or the audio.
For many users, the demand on the memory assets in the computer systems would be too great for anything but a short video clip or a few music files. For most users, the time delay (having to download first and then play) is not acceptable even if, for argument sake, the demand on the user's computer system's memory assets were manageable. And, for live events, such as political debates, sports events, trials and the like, the download and then play technique is just plain inappropriate.
So engineers developed what is known as “streaming media.”Streaming media is a series of packets of compressed data, each packet representing moving images and/or audio.
To help understand streaming media, it is helpful to review again the traditional Internet distribution method. Since a “node” in a computer network system such as described herein would not exist but for a computer system being active on such node, the terms “node” and “computer system” may be used interchangeably. So, the term “node” should be understood to include an active computer system. Each node, whether it is a server node or a user node, in a computer network has a unique identification (sometimes referred to as an “IP” address) associated with it. On the Internet, the unique address is referred to as a Uniform Resource Locator (“URL”). A user desiring to obtain data from a particular server enters that server's URL into the user's browser program. The browser program causes a connection request signal to be sent over the Internet to the server. If the server has the capacity to accept the connection, the connection is made between the server and the user node. Files requested by the user are transmitted by the server in full to the user node, and the browser program stores the files in buffer memory and displays the content on the user's computer system monitor. (Some files may be more permanently stored in the computer system's memory for later viewing or playing.) The connection with the server is terminated once the files have been received at the user node, or it is terminated a short time thereafter. Either way, the connection is usually of a very short time duration.
With streaming media, the contact between the server and user nodes is continuous. When a connection between a server node and user node is made and streaming media is requested, the server sends streaming media packets of data to the user node in a distribution network such as shown in FIG. 1. A streaming media player (i.e., software, such as RealMedia® from RealNetworks, Inc. of Seattle, Wash., installed on the user's computer system) causes the data to be stored in buffer memory. The player decompresses the data and begins playing the moving images and audio represented by the data on the user's computer system. As the data from a packet is played, the buffer containing that packet is emptied and becomes available to receive a new packet of data. As a result, the memory assets of a user's computer are not overly taxed. Continuous action content, such as the display of motion picture films and recorded television shows may be distributed and played in “real time,” and live events, such as concerts, football games, court trials, and political debates may be transmitted and viewed “live” (with only the brief delays needed for compression of the data being made available on the server, transmission from the server to the user node, and decompression and play on the user's computer system preventing a user from seeing the event at the exact same moment in time as a person actually at the event). And, when the systems are working as designed, the server node and user node stay connected to each other until all the packets of data representing the content have been transmitted.
However, neither the traditional distribution scheme illustrated in FIG. 1 nor the Napster™ scheme illustrated in FIG. 2 is particularly useful for the anticipated growth in the distribution of streaming media for “appointment” transmission of audiovisual content such as live or pre-recorded concerts, court trials, motion picture films, videos or television shows, with acceptable levels of quality. It is anticipated that streaming media transmissions will be events intended to reach large audiences, much in the way that television shows transmitted over television cable and broadcast media reach large audiences. Few, if any, servers, with or without mirror sites, have the bandwidth necessary to transmit streaming media to the anticipated number of users which would be simultaneously logging on to view a particular show.